#ifndef TD_SDL_FONT_H_
#define TD_SDL_FONT_H_

/************************************************************************/
/* STL                                                                  */
/************************************************************************/
#include <string>
#include <exception>

/************************************************************************/
/* SDL                                                                  */
/*************************************************************************/
#include "SDL_ttf/SDL_ttf.h"

/************************************************************************/
/* Core                                                                 */
/************************************************************************/
#include "Core/Color.h"

/************************************************************************/
/* Resources                                                            */
/************************************************************************/
#include "Resources/Resource.h"


using namespace std;
using namespace TD_Core;

namespace TD_Resources {

	class SDLFont : public Resource {
		
		unsigned int m_fontSize;
		/** TFF font pointer*/
		TTF_Font *m_pFont;

	public:

		/************************************************************************/
		/* ctors and dtors					                                    */
		/************************************************************************/
		//Default constructor
		explicit SDLFont();

		//Copy constructor
		explicit SDLFont(const SDLFont &rhs);

		//Assignment constructor
		SDLFont& operator=(const SDLFont &rhs);

		//Initialization constructor
		explicit SDLFont(const string &fontName, unsigned int fontSize);

		/************************************************************************/
		/* Access functions                                                     */
		/************************************************************************/
		TTF_Font * getRawFont() const {
			return(m_pFont);
		}
		
		/************************************************************************/
		/* Rendering                                                            */
		/************************************************************************/

		void render(SDL_Surface *g_destSurface, unsigned int deltaTime);
	};
}
#endif